package com.atguigu.juc.day04.cf;

import com.atguigu.juc.day04.pool.Demo01MyPool;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;

public class Demo07RunThenRun {

    public static void main(String[] args) {

        ExecutorService executorService = Demo01MyPool.getExecutorService();

        // 在没有返回值的任务之后再跟一个没有返回值的任务
        CompletableFuture.runAsync(()->{
            System.out.println(Thread.currentThread().getName() + " is working.");
        }, executorService).thenRun(()->{
            System.out.println(Thread.currentThread().getName() + " is working.");
        }).thenRunAsync(()->{
            System.out.println(Thread.currentThread().getName() + " is working.");
        }, executorService);

        // thenRun()方法：在前面任务执行完之后，再执行一个任务。
        // thenRunAsync()方法：
        //     情况一：没有指定线程池，使用内置默认线程池。
        //     情况二：指定了线程池，使用指定的线程池。到线程池中找一个空闲的线程执行当前任务。此时有可能选中的还是上一个任务的线程。

    }

}
